import {
  userBehavior
} from './behavior'
import {
  reqSetUserInfo
} from '../../../../api/user'
import {
  toast
} from '../../../../utils/extendApi'
import {setStorage} from '../../../../utils/storage'
Page({
  // 注册
  behaviors: [userBehavior],
  data: {
    isShowDialog: false, // 控制更新用户昵称的弹框显示与否
    value: '', //输入框的内容
    form: {
      headimgurl: '',
      nickname: '',
    }
  },
  onShow() {
    this.setData({
      form: {
        headimgurl: this.data.userInfo.headimgurl,
        nickname: this.data.userInfo.nickname,
      }
    })
  },
    // 更新用户头像
    async chooseAvatar(event) {
      // 获取头像的临时路径
      // 临时路径具有失效时间，需要将临时路径上传到公司的服务器，获取永久的路径
      // 在获取永久路径以后，需要使用永久路径更新 headimgurl
      // 用户点击 保存按钮，才算真正的更新了头像和昵称
      const { avatarUrl } = event.detail
  
      // 第二种实现本地资源上传的方式：使用 mina-request 提供的 upload 实例方法
      const res = await reqUploadFile(avatarUrl, 'file')
  
      this.setData({
        'userInfo.headimgurl': res.data
      })
  
      // 第一种实现本地资源上传的方式：
      // 在获取头像临时路径以后，需要将临时路径通过 wx.uploadFile 上传到服务器
      // wx.uploadFile({
      //   url: 'https://gmall-prod.atguigu.cn/mall-api/fileUpload', // 开发者服务器地址
      //   filePath: avatarUrl, // 要上传的文件资源路径
      //   name: 'file', // 文件对应的 key
      //   header: {
      //     token: getStorage('token')
      //   },
      //   success: (res) => {
      //     // console.log(res)
      //     // 调用 uploadFile 方法，返回的数据是 JSON 字符串，需要自己使用 JSON.parse 进行转换
      //     const uploadRes = JSON.parse(res.data)
      //     // console.log(uploadRes)
  
      //     this.setData({
      //       'userInfo.headimgurl': uploadRes.data
      //     })
      //   }
      // })
  
      // this.setData({
      //   'userInfo.headimgurl': avatarUrl
      // })
    },
  inputChange(e) {
    this.setData({
      value: e.detail.value,
      'form.nickname': e.detail.value,
    });
  },
  openDialog() {
    this.setData({
      isShowDialog: !this.isShowDialog,
    })
  },
  onClose() {
    this.setData({
      'form.nickname': this.data.userInfo.nickname,
      isShowDialog: false,
    })
  },
  onConfirm() {
    this.setData({
      isShowDialog: false,
      'form.nickname': this.data.value,
    })
  },
  //点击保存的事件
  async submit() {
    let res = await reqSetUserInfo(this.data.form)
    if (res.code == 200) {
       // 用户信息更新成功以后，需要将最新的用户信息存储到本地
       setStorage('userInfo', this.data.form)
       // 用户信息更新成功以后，同时同步到 Store
       this.setUserInfon(this.data.form)
      toast({
        title: '修改成功'
      })
    }
  }
})